<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      * {
        padding: 0;
        margin: 0;
      }

      body {
        display: flex;
        justify-content: center;
        align-items: center;
        width: 100vw;
        height: 100vh;
      }

      main {
        width: 400px;
        flex-direction: column;
        position: relative;
        margin-right: 20px;
      }

      main nav {
        display: flex;
        height: 50px;
        align-items: center;
      }

      main nav a {
        background: #95a5a6;
        margin-right: px;
        padding: 10px 20px;
        border: solid 1px #333;
        color: #fff;
        text-decoration: none;
      }

      main nav a:first-of-type {
        background: #e67e22;
      }

      section {
        height: 200px;
        width: 100%;
        background: #f1c40f;
        position: absolute;
        font-size: 5em;
        display: none;
      }

      .hd-tab section:first-of-type {
        display: block;
      }

      section:nth-child(even) {
        background: #27ae60;
      }
    </style>
  </head>

  <body>
    <main class="tab1">
      <nav>
        <a href="javascript:;">后盾人</a>
        <a href="javascript:;">hdcms</a>
      </nav>
      <section>1</section>
      <section>2</section>
    </main>
    <main class="tab2">
      <nav>
        <a href="javascript:;">后盾人</a>
        <a href="javascript:;">hdcms</a>
      </nav>
      <section>1</section>
      <section>2</section>
    </main>
  </body>
  <!-- <script>
    // 继承工厂
    function extend(sub,sup){
      sub.prototype = Object.create(sup.prototype)
      sub.prototype.constructor = sub
    }

    // 动作类
    function Animation(){}
    // 显示元素
    Animation.prototype.show = function(){
      this.style.display = "block"
    }
    // 隐藏元素
    Animation.prototype.hide = function(){
      this.style.display = 'none'
    }
    // 必变元素集合背景
    Animation.prototype.background = function(color){
      this.style.background = color
    }

    // 选项卡类
    function Tab(tab){
      this.tab = tab;
      this.links = null;
      this.sections = null;
    }
    extend(Tab,Animation)
    Tab.prototype.run = function(){
      this.links = this.tab.querySelectorAll("a")
      this.sections = this.tab.querySelectorAll("section")
      this.bindEvent()
      this.action(0)
    }
    // 绑定事件
    Tab.prototype.bindEvent = function(){
      this.links.forEach((el,i) => {
        el.addEventListener("click",()=>{
          this.reset();
          this.action(i);
        })
      });
    }
    // 点击后触发动作
    Tab.prototype.action = function(i){
      this.show.call(this.sections[i])
      this.background.call(this.links[i],'#e67e22');
    }
    // 重置link与section
    Tab.prototype.reset = function(){
      this.links.forEach((el,i)=>{
        this.hide.call(this.sections[i])
        this.background.call(el,"#95a5a6")
      })
    }

    new Tab(document.querySelector(".tab1")).run();
    new Tab(document.querySelector(".tab2")).run();
  </script> -->
  <script>
    class Animation{
      constructor(){}
      show(){
        this.style.display = "block"
      }
      hide(){
        this.style.display = "none"
      }
      background(color){
        this.style.background = color
      }
    }

    class Tab extends Animation{
      constructor(tab){
        super()
        this.tab = tab;
        this.links = null;
        this.sections = null;
      }
      run(){
        this.links = this.tab.querySelectorAll('a')
        this.sections = this.tab.querySelectorAll('section')
        this.bindEvent()
        this.action(0)
      }
      bindEvent(){
        this.links.forEach((el,i)=>{
          el.addEventListener('click',()=>{
            this.reset()
            this.action(i)
          })
        })
      }
      action(i){
        super.background.call(this.links[i],'#e67e22')
        super.show.call(this.sections[i])
      }
      reset(){
        this.links.forEach((el,i)=>{
          super.hide.call(this.sections[i])
          super.background.call(el,"#95a5a6")
        })
      }

    }

    new Tab(document.querySelector(".tab1")).run();
    new Tab(document.querySelector(".tab2")).run();
  </script>
</html>
